#ifndef __CXMLSaxList_H__
#define __CXMLSaxList_H__

#include "CXMLSaxParser.h"

#include <lampe/xml/IXMLSaxList.h>

namespace lampe{
namespace xml{

class CXMLSaxList:public IXMLSaxList{
private:
	u32 index;
	struct att{
		String name;
		String value;
		att(String n,String v){
			name=n;
			value=v;
		}
	};

	struct element{
	public:
		int type;
		LAMPE_VECTOR_VENDOR<att> attribytes;
		String text;
		String name;
		bool isEmpty;
		bool cdata;
	};
	LAMPE_VECTOR_VENDOR<element> elements;
	static void parse(CXMLSaxParser*sax_parser);
	void readedElement(CXMLSaxParser*sax_parser);
public:
	CXMLSaxList(stream::IReader*parser);


	bool read();
	int getNodeType();
	String getNodeName();
	bool isEmptyElement();
	u32 getAttributeCount();
	String getAttributeName(u32 index);
	String getAttributeValue(u32 index);
	String getNodeData();
	bool isCDATA();
};


extern IXMLSaxList*createSAXList(stream::IReader*parser);

}//namespace xml
}//namespace lampe
#endif
